Micron Document
Fox's Git Mirrors

Node / RFnexus / code.git / commits / df6aeff

Commit df6aeff840867ffad363fb0ef8b4b96ae80c5c14


Parents : c87fcdb
Author : Ahmet Inan <inan@aicodix.de>
Date : 2024-03-26T07:45:23+01:00

skip every other reduction step

Changes

1 files changed, 16 insertions(+), 6 deletions(-)


Diff

diff --git a/cauchy_reed_solomon_erasure_coding2.hh b/cauchy_reed_solomon_erasure_coding2.hh
index d3da684..f527158 100644
--- a/cauchy_reed_solomon_erasure_coding2.hh
+++ b/cauchy_reed_solomon_erasure_coding2.hh
@@ -41,20 +41,30 @@ struct CauchyReedSolomonErasureCoding2
PF num(1), den(1);
for (int k = 0; k < n; k++) {
PF col_k(k);
- num *= add(rows[k], col_i);
+ num = mul(num, add(rows[k], col_i));
if (k != i)
- den *= sub(col_i, col_k);
+ den = mul(den, sub(col_i, col_k));
+ if (k & 1) {
+ num = reduce(num);
+ den = reduce(den);
+ }
}
- row_num = num;
- row_den = den;
+ row_num = reduce(num);
+ row_den = reduce(den);
}
PF num(row_num), den(row_den);
for (int k = 0; k < n; k++) {
PF col_k(k);
- num *= add(rows[j], col_k);
+ num = mul(num, add(rows[j], col_k));
if (k != j)
- den *= sub(rows[j], rows[k]);
+ den = mul(den, sub(rows[j], rows[k]));
+ if (k & 1) {
+ num = reduce(num);
+ den = reduce(den);
+ }
}
+ num = reduce(num);
+ den = reduce(den);
return num / (add(rows[j], col_i) * den);
#endif
}

Served by rngit 1.4.1 - Generated in 0.04s